package thread;

/**
 *守护线程
 * 守护线程也称为：后台线程
 * 守护线程是通过普通线程调用setDaemon（）方法设置而来，因此创建上与普通线程无异
 * 守护线程的结束时机上有一点与普通线程不同，即：进程的结束
 * 进程结束：当一个进程中的所有普通线程都结束时，进程就会结束，此时会杀掉所有正在运行的守护
 * 线程。
 *
 * 通常当我们不关心某个线程的任务什么时候停下来，它可以一直运行，但是程序主要的工作都结束嘞
 *时他应当跟着结束时，这样的任务就适合放在守护线程上执行，比如GC就是在守护线程上进行的！
 */
public class DaemonThreadDemo {
    public static void main(String[] args) {
        System.out.println("老大问道：老二，老三的车咋掉沟里的？");
        Thread rose=new Thread(){
            public void run(){
                for (int i = 0; i <5 ; i++) {
                    System.out.println("老二说： 我说沟！沟！沟！");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                    }
                }
                System.out.println("老三！啊啊啊啊啊，完了掉沟了");
                System.out.println("老三整个都蒙了！！！！！");
            }
        };
        Thread jack=new Thread(){
            public void run(){
                while (true){
                    System.out.println("老三说：哦嘞！哦嘞！哦嘞！哦嘞！");
                    try {
                        Thread.sleep(1000);
                    } catch (InterruptedException e) {
                    }
                }
            }
        };
        rose.start();
        jack.setDaemon(true);//将jack设置为守护xc
        jack.start();
        //  while（true）主线程在这里死循环，只要有普通线程或者，进程就不会结束。jack就不会被杀掉
    }
}
